home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / AvantBrowser / asetup.exe / _data / webkit / chrome_100_percent.pak / Unnamed File 000024.txt < prev    next >
Text File  |  2013-04-03  |  3KB  |  101 lines

  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4.  
  5. // Custom bindings for the contextMenus API.
  6.  
  7. var contextMenus = requireNative('context_menus');
  8. var GetNextContextMenuId = contextMenus.GetNextContextMenuId;
  9. var sendRequest = require('sendRequest').sendRequest;
  10.  
  11. var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
  12.  
  13. chromeHidden.registerCustomHook('contextMenus', function(bindingsAPI) {
  14.   var apiFunctions = bindingsAPI.apiFunctions;
  15.  
  16.   chromeHidden.contextMenus = {};
  17.   chromeHidden.contextMenus.generatedIdHandlers = {};
  18.   chromeHidden.contextMenus.stringIdHandlers = {};
  19.   var eventName = 'contextMenus';
  20.   chromeHidden.contextMenus.event = new chrome.Event(eventName);
  21.   chromeHidden.contextMenus.getIdFromCreateProperties = function(prop) {
  22.     if (typeof(prop.id) !== 'undefined')
  23.       return prop.id;
  24.     return prop.generatedId;
  25.   };
  26.   chromeHidden.contextMenus.handlersForId = function(id) {
  27.     if (typeof(id) === 'number')
  28.       return chromeHidden.contextMenus.generatedIdHandlers;
  29.     return chromeHidden.contextMenus.stringIdHandlers;
  30.   };
  31.   chromeHidden.contextMenus.ensureListenerSetup = function() {
  32.     if (chromeHidden.contextMenus.listening) {
  33.       return;
  34.     }
  35.     chromeHidden.contextMenus.listening = true;
  36.     chromeHidden.contextMenus.event.addListener(function() {
  37.       // An extension context menu item has been clicked on - fire the onclick
  38.       // if there is one.
  39.       var id = arguments[0].menuItemId;
  40.       var onclick = chromeHidden.contextMenus.handlersForId(id)[id];
  41.       if (onclick) {
  42.         onclick.apply(null, arguments);
  43.       }
  44.     });
  45.   };
  46.  
  47.   apiFunctions.setHandleRequest('create', function() {
  48.     var args = arguments;
  49.     var id = GetNextContextMenuId();
  50.     args[0].generatedId = id;
  51.     var optArgs = {
  52.       customCallback: this.customCallback,
  53.     };
  54.     sendRequest(this.name, args, this.definition.parameters, optArgs);
  55.     return chromeHidden.contextMenus.getIdFromCreateProperties(args[0]);
  56.   });
  57.  
  58.   apiFunctions.setCustomCallback('create', function(name, request, response) {
  59.     if (chrome.runtime.lastError) {
  60.       return;
  61.     }
  62.  
  63.     var id = chromeHidden.contextMenus.getIdFromCreateProperties(
  64.         request.args[0]);
  65.  
  66.     // Set up the onclick handler if we were passed one in the request.
  67.     var onclick = request.args.length ? request.args[0].onclick : null;
  68.     if (onclick) {
  69.       chromeHidden.contextMenus.ensureListenerSetup();
  70.       chromeHidden.contextMenus.handlersForId(id)[id] = onclick;
  71.     }
  72.   });
  73.  
  74.   apiFunctions.setCustomCallback('remove', function(name, request, response) {
  75.     if (chrome.runtime.lastError) {
  76.       return;
  77.     }
  78.     var id = request.args[0];
  79.     delete chromeHidden.contextMenus.handlersForId(id)[id];
  80.   });
  81.  
  82.   apiFunctions.setCustomCallback('update', function(name, request, response) {
  83.     if (chrome.runtime.lastError) {
  84.       return;
  85.     }
  86.     var id = request.args[0];
  87.     if (request.args[1].onclick) {
  88.       chromeHidden.contextMenus.handlersForId(id)[id] = request.args[1].onclick;
  89.     }
  90.   });
  91.  
  92.   apiFunctions.setCustomCallback('removeAll',
  93.                                  function(name, request, response) {
  94.     if (chrome.runtime.lastError) {
  95.       return;
  96.     }
  97.     chromeHidden.contextMenus.generatedIdHandlers = {};
  98.     chromeHidden.contextMenus.stringIdHandlers = {};
  99.   });
  100. });
  101.